/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI;

import ClasesBase.Propiedad;
import Extras.GestorEstilos;
import Extras.HeaderCellRenderer;
import Extras.Mensajes;
import Extras.TableCellRendererPropio;
import Gestores.GestorCliente;
import java.util.LinkedList;
import javax.swing.ImageIcon;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Francisco
 */
public class ConstruirD extends javax.swing.JDialog {

    private GestorCliente gestorCliente;
    private int dineroDpsConstruccion = 0;
    private boolean construir;
    private DefaultTableModel dtmPropiedades;

    /**
     * Creates new form ConstruirD
     */
    public ConstruirD(java.awt.Frame parent, boolean modal, GestorCliente gestorCliente, boolean construir) {
        super(parent, modal);
        initComponents();
        dtmPropiedades = (DefaultTableModel) jT_propiedades.getModel();
        this.gestorCliente = gestorCliente;
        this.construir = construir;
        setearDineroActual();
        crearColumnasInvisibles();
        setearTablaPropiedades();
        if (!construir) {
            this.jLs_dineroDspConstruccion.setText("Dinero despues de vender:");
            this.jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/VENDER2 ON.png")));
            //setear boton de vender.    
            //this.jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/DESHIPOTECAR2 ON.png")));
        }
        
        this.jT_propiedades.getTableHeader().setDefaultRenderer(new HeaderCellRenderer());
        this.jT_propiedades.setDefaultRenderer(String.class, new TableCellRendererPropio());
        GestorEstilos.pintar(this);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jT_propiedades = new javax.swing.JTable();
        jB_agregarCasa = new javax.swing.JButton();
        jB_quitarCasa = new javax.swing.JButton();
        jB_construirVender = new javax.swing.JButton();
        jB_cancelar = new javax.swing.JButton();
        jL_dineroDspConstruccion = new javax.swing.JLabel();
        jLs_dineroDspConstruccion = new javax.swing.JLabel();
        jLs_recordatorio = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setMaximumSize(new java.awt.Dimension(830, 300));
        setMinimumSize(new java.awt.Dimension(830, 300));
        setPreferredSize(new java.awt.Dimension(830, 300));
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });
        getContentPane().setLayout(null);

        jT_propiedades.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Propiedad", "Color", "Casas Actuales", "Casas Luego de Construir", "id", "PrecioXCasa"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jT_propiedades.getTableHeader().setReorderingAllowed(false);
        jScrollPane1.setViewportView(jT_propiedades);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(10, 39, 682, 151);

        jB_agregarCasa.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Botones/AGREGARCASA ON.png"))); // NOI18N
        jB_agregarCasa.setEnabled(false);
        jB_agregarCasa.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                jB_agregarCasaMouseReleased(evt);
            }
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                jB_agregarCasaMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                jB_agregarCasaMouseExited(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jB_agregarCasaMousePressed(evt);
            }
        });
        jB_agregarCasa.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_agregarCasaActionPerformed(evt);
            }
        });
        getContentPane().add(jB_agregarCasa);
        jB_agregarCasa.setBounds(702, 45, 114, 23);

        jB_quitarCasa.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Botones/QUITARCASA ON.png"))); // NOI18N
        jB_quitarCasa.setEnabled(false);
        jB_quitarCasa.setMaximumSize(new java.awt.Dimension(115, 31));
        jB_quitarCasa.setMinimumSize(new java.awt.Dimension(115, 31));
        jB_quitarCasa.setPreferredSize(new java.awt.Dimension(115, 31));
        jB_quitarCasa.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                jB_quitarCasaMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                jB_quitarCasaMouseExited(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jB_quitarCasaMousePressed(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                jB_quitarCasaMouseReleased(evt);
            }
        });
        jB_quitarCasa.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_quitarCasaActionPerformed(evt);
            }
        });
        getContentPane().add(jB_quitarCasa);
        jB_quitarCasa.setBounds(702, 86, 114, 23);

        jB_construirVender.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Botones/CONSTRUIR2 ON.png"))); // NOI18N
        jB_construirVender.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                jB_construirVenderMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                jB_construirVenderMouseExited(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jB_construirVenderMousePressed(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                jB_construirVenderMouseReleased(evt);
            }
        });
        jB_construirVender.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_construirVenderActionPerformed(evt);
            }
        });
        getContentPane().add(jB_construirVender);
        jB_construirVender.setBounds(10, 226, 80, 22);

        jB_cancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Botones/CANCELAR ON.png"))); // NOI18N
        jB_cancelar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                jB_cancelarMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                jB_cancelarMouseExited(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jB_cancelarMousePressed(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                jB_cancelarMouseReleased(evt);
            }
        });
        jB_cancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_cancelarActionPerformed(evt);
            }
        });
        getContentPane().add(jB_cancelar);
        jB_cancelar.setBounds(732, 230, 80, 22);

        jL_dineroDspConstruccion.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jL_dineroDspConstruccion.setText("jLabel2");
        getContentPane().add(jL_dineroDspConstruccion);
        jL_dineroDspConstruccion.setBounds(177, 201, 96, 14);

        jLs_dineroDspConstruccion.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLs_dineroDspConstruccion.setText("Dinero despues de construir:");
        getContentPane().add(jLs_dineroDspConstruccion);
        jLs_dineroDspConstruccion.setBounds(10, 201, 161, 14);

        jLs_recordatorio.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLs_recordatorio.setText("Recuerde que para construir o vender casas debe hacerlo uniformemente(De a una casa por terreno).");
        getContentPane().add(jLs_recordatorio);
        jLs_recordatorio.setBounds(10, 11, 698, 17);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jB_agregarCasaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jB_agregarCasaActionPerformed
        String casasActuales = this.jT_propiedades.getValueAt(this.jT_propiedades.getSelectedRow(), 2).toString();
        String casasTotales = this.jT_propiedades.getValueAt(this.jT_propiedades.getSelectedRow(), 3).toString();
        String precio = this.jT_propiedades.getValueAt(this.jT_propiedades.getSelectedRow(), 5).toString();
        String casasAConstruir = this.jT_propiedades.getValueAt(this.jT_propiedades.getSelectedRow(), 4).toString();
        int casasAConstruirEnteros = 0;
        int casasTotalesEnteros = 0;
        int precioDps = Integer.parseInt(precio);
        if (construir) {
            if(dineroDpsConstruccion-precioDps < 0){
                Mensajes.mostrarInformacion("No tiene suficiente dinero para agregar una casa/hotel.");
                return;
            }
            if (casasTotales.compareTo("Hotel") == 0) {
                Mensajes.mostrarInformacion("Ha llegado al maximo de edificación en esta propiedad.");
                return;
            } else {
                casasTotalesEnteros = Integer.parseInt(casasTotales);
                dineroDpsConstruccion -= precioDps;
            }
            if (casasTotalesEnteros == 4) {
                dtmPropiedades.setValueAt("Hotel", this.jT_propiedades.getSelectedRow(), 3);
            } else {
                dtmPropiedades.setValueAt(casasTotalesEnteros + 1, this.jT_propiedades.getSelectedRow(), 3);
            }
        } else {
            if (casasTotales.compareTo(casasActuales) == 0) {
                Mensajes.mostrarError("No puede agregar más casas de las que tiene construidas. Para eso utilice CONSTRUIR.");
                return;
            }
            casasTotalesEnteros = Integer.parseInt(casasTotales);
            dineroDpsConstruccion -= precioDps;
            if (casasTotalesEnteros == 4) {
                dtmPropiedades.setValueAt("Hotel", this.jT_propiedades.getSelectedRow(), 3);
            } else {
                dtmPropiedades.setValueAt(casasTotalesEnteros + 1, this.jT_propiedades.getSelectedRow(), 3);
            }
        }
        jL_dineroDspConstruccion.setText(dineroDpsConstruccion + "");
    }//GEN-LAST:event_jB_agregarCasaActionPerformed

    private void jB_quitarCasaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jB_quitarCasaActionPerformed
        String casasYaConstruidas = this.jT_propiedades.getValueAt(this.jT_propiedades.getSelectedRow(), 2).toString();
        String casasTotales = this.jT_propiedades.getValueAt(this.jT_propiedades.getSelectedRow(), 3).toString();
        String precio = this.jT_propiedades.getValueAt(this.jT_propiedades.getSelectedRow(), 5).toString();
        int casasTotalesEnteros = 0;
        int casasYaConstruidasEnteros = 0;
        int precioDps = Integer.parseInt(precio);
        if (construir) {
            if (casasYaConstruidas.compareTo("Hotel") == 0) {
                Mensajes.mostrarInformacion("No se puede quitar mas casas de las que ya estan construidas. Por favor utilice la herramienta vender para esto.");
                return;
            }
            if (casasTotales.compareTo("Hotel") == 0) {
                dtmPropiedades.setValueAt(4, this.jT_propiedades.getSelectedRow(), 3);
                dineroDpsConstruccion += precioDps;
            } else {
                casasYaConstruidasEnteros = Integer.parseInt(casasYaConstruidas);
                casasTotalesEnteros = Integer.parseInt(casasTotales);
                if (casasTotalesEnteros == casasYaConstruidasEnteros) {
                    Mensajes.mostrarInformacion("No se puede quitar mas casas de las que ya estan construidas. Por favor utilice la herramienta vender para esto.");
                    return;
                } else {
                    dtmPropiedades.setValueAt(casasTotalesEnteros - 1, this.jT_propiedades.getSelectedRow(), 3);
                    dineroDpsConstruccion += precioDps;
                }
            }
        } else {
            if (casasTotales.compareTo("Hotel") == 0) {
                dtmPropiedades.setValueAt(4, this.jT_propiedades.getSelectedRow(), 3);
                dineroDpsConstruccion += precioDps;
                jL_dineroDspConstruccion.setText(dineroDpsConstruccion + "");
                return;
            } else {
                casasTotalesEnteros = Integer.parseInt(casasTotales);
            }
            if (casasTotalesEnteros == 0) {
                Mensajes.mostrarInformacion("Ya se removieron todas las casas de este terreno.");
                return;
            } else {
                dtmPropiedades.setValueAt(casasTotalesEnteros - 1, this.jT_propiedades.getSelectedRow(), 3);
                dineroDpsConstruccion += precioDps;
            }
        }
        jL_dineroDspConstruccion.setText(dineroDpsConstruccion + "");
    }//GEN-LAST:event_jB_quitarCasaActionPerformed

    private void jB_construirVenderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jB_construirVenderActionPerformed
        DefaultTableModel dtm = (DefaultTableModel) jT_propiedades.getModel();
        int cantidad = dtm.getRowCount();
        LinkedList<Propiedad> propiedades = new LinkedList<>();
        for (int i = 0; i < cantidad; i++) {
            Propiedad p = new Propiedad();
            p.setNombre(dtm.getValueAt(i, 0).toString());
            p.setColor(dtm.getValueAt(i, 1).toString());
            int cantCasas = dtm.getValueAt(i, 3).toString().compareTo("Hotel") == 0 ? 5 : Integer.parseInt(dtm.getValueAt(i, 3).toString());
            p.setCantCasas(cantCasas);
            p.setIdCasillero(Integer.parseInt(dtm.getValueAt(i, 4).toString()));
            propiedades.add(p);
        }
        if (verificarConstruccionesValidas(propiedades)) {
            gestorCliente.construir(propiedades);
        } else {
            gestorCliente.mostrarMensajeError("Verifique las construcciones, deben ser uniformes.");
        }
    }//GEN-LAST:event_jB_construirVenderActionPerformed

    private void jB_cancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jB_cancelarActionPerformed
        gestorCliente.avisarCancelacionAccion();
        dispose();
    }//GEN-LAST:event_jB_cancelarActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        gestorCliente.avisarCancelacionAccion();
        dispose();
    }//GEN-LAST:event_formWindowClosing

    private void jB_construirVenderMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_construirVenderMouseEntered
        if(construir)
        {
            jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/CONSTRUIR2 SEL.png")));
        }
        else
        {
             this.jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/VENDER2 SEL.png")));
        }
    }//GEN-LAST:event_jB_construirVenderMouseEntered

    private void jB_construirVenderMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_construirVenderMouseExited
        if(construir)
        {
        jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/CONSTRUIR2 ON.png")));
        }
        else
        {
             this.jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/VENDER2 ON.png")));
        }
    }//GEN-LAST:event_jB_construirVenderMouseExited

    private void jB_construirVenderMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_construirVenderMousePressed
        if(construir)
        {
        jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/CONSTRUIR2 OFF.png")));
        }
        else
        {
        this.jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/VENDER2 OFF.png")));
        }
    }//GEN-LAST:event_jB_construirVenderMousePressed

    private void jB_construirVenderMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_construirVenderMouseReleased
        if(construir)
        {
        jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/CONSTRUIR2 ON.png")));
        }
        else
        {
       this.jB_construirVender.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/VENDER2 ON.png")));
        }
    }//GEN-LAST:event_jB_construirVenderMouseReleased

    private void jB_cancelarMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_cancelarMouseEntered
        jB_cancelar.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/CANCELAR SEL.png")));
    }//GEN-LAST:event_jB_cancelarMouseEntered

    private void jB_cancelarMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_cancelarMouseExited
        jB_cancelar.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/CANCELAR ON.png")));
    }//GEN-LAST:event_jB_cancelarMouseExited

    private void jB_cancelarMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_cancelarMousePressed
        jB_cancelar.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/CANCELAR OFF.png")));
    }//GEN-LAST:event_jB_cancelarMousePressed

    private void jB_cancelarMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_cancelarMouseReleased
        jB_cancelar.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/CANCELAR ON.png")));
    }//GEN-LAST:event_jB_cancelarMouseReleased

    private void jB_agregarCasaMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_agregarCasaMouseEntered
        if (jB_agregarCasa.isEnabled()) {
            jB_agregarCasa.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/AGREGARCASA SEL.png")));
        }
    }//GEN-LAST:event_jB_agregarCasaMouseEntered

    private void jB_agregarCasaMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_agregarCasaMouseExited
        if (jB_agregarCasa.isEnabled()) {
            jB_agregarCasa.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/AGREGARCASA ON.png")));
        }
    }//GEN-LAST:event_jB_agregarCasaMouseExited

    private void jB_agregarCasaMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_agregarCasaMousePressed
        if (jB_agregarCasa.isEnabled()) {
            jB_agregarCasa.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/AGREGARCASA OFF.png")));
        }
    }//GEN-LAST:event_jB_agregarCasaMousePressed

    private void jB_agregarCasaMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_agregarCasaMouseReleased
        if (jB_agregarCasa.isEnabled()) {
            jB_agregarCasa.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/AGREGARCASA ON.png")));
        }
    }//GEN-LAST:event_jB_agregarCasaMouseReleased

    private void jB_quitarCasaMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_quitarCasaMouseEntered
        if (jB_quitarCasa.isEnabled()) {
            jB_quitarCasa.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/QUITARCASA SEL.png")));
        }
    }//GEN-LAST:event_jB_quitarCasaMouseEntered

    private void jB_quitarCasaMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_quitarCasaMouseExited
        if (jB_quitarCasa.isEnabled()) {
            jB_quitarCasa.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/QUITARCASA ON.png")));
        }
    }//GEN-LAST:event_jB_quitarCasaMouseExited

    private void jB_quitarCasaMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_quitarCasaMousePressed
        if (jB_quitarCasa.isEnabled()) {
            jB_quitarCasa.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/QUITARCASA OFF.png")));
        }
    }//GEN-LAST:event_jB_quitarCasaMousePressed

    private void jB_quitarCasaMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB_quitarCasaMouseReleased
        if (jB_quitarCasa.isEnabled()) {
            jB_quitarCasa.setIcon(new ImageIcon(getClass().getResource("/Imagenes/Botones/QUITARCASA ON.png")));
        }
    }//GEN-LAST:event_jB_quitarCasaMouseReleased

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jB_agregarCasa;
    private javax.swing.JButton jB_cancelar;
    private javax.swing.JButton jB_construirVender;
    private javax.swing.JButton jB_quitarCasa;
    private javax.swing.JLabel jL_dineroDspConstruccion;
    private javax.swing.JLabel jLs_dineroDspConstruccion;
    private javax.swing.JLabel jLs_recordatorio;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jT_propiedades;
    // End of variables declaration//GEN-END:variables

    private void setearDineroActual() {
        dineroDpsConstruccion = this.gestorCliente.getDineroEfectivo();
        this.jL_dineroDspConstruccion.setText(dineroDpsConstruccion + "");
    }

    private void crearColumnasInvisibles() {
        jT_propiedades.getColumn("id").setMaxWidth(0);
        jT_propiedades.getColumn("id").setMinWidth(0);
        jT_propiedades.getColumn("id").setWidth(0);
        jT_propiedades.getColumn("id").setResizable(false);
        jT_propiedades.getColumn("id").setPreferredWidth(0);
        jT_propiedades.getColumn("Casas Luego de Construir").setResizable(false);
    }

    public JTable getTablaAConstruir() {
        return jT_propiedades;
    }

    private void setearTablaPropiedades() {
        this.jT_propiedades.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        ListSelectionModel lsm = this.jT_propiedades.getSelectionModel();
        lsm.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                if (jT_propiedades.getSelectedRow() != -1) {
                    jB_agregarCasa.setEnabled(true);
                    jB_quitarCasa.setEnabled(true);
                }

            }
        });
    }

    private boolean verificarConstruccionesValidas(LinkedList<Propiedad> propiedades) {
        boolean esValido = true;
        for (Propiedad propiedad : propiedades) {
            for (Propiedad propiedad1 : propiedades) {
                if (propiedad.getColor().compareTo(propiedad1.getColor()) == 0) {
                    esValido = (propiedad.getCantCasas() >= propiedad1.getCantCasas() - 1 && propiedad.getCantCasas() <= propiedad1.getCantCasas() + 1) && esValido;
                }
            }
        }
        return esValido;
    }
}
